To minimize effort and expense, a data storage system may be designed for general-purpose use. That is, a single data storage system design may be used for many different applications. However, design trade-offs that are appropriate in one context may not be appropriate in another context. For example, in a storage system for serving Internet downloads, high bandwidth and fault tolerance may be priorities, whereas, in a storage system for archiving data records, low cost and low power consumption may be priorities. Accordingly, the specific goals and important features of a data storage system can be better achieved if the intended use of the storage system is taken into account during its design. Of course, a disadvantage of a specifically-designed storage system is in the costs associated with the design process.
The design of a storage system for a specific application generally requires that a skilled designer rely on experience while making design choices that are based on the requirements for the storage system and available information regarding possible memory devices to be incorporated into the storage system. Particularly, a variety of different memory devices form the building blocks of modern data storage systems. Specific devices can be based on, for example, optical, magnetic and/or electronic storage technologies and may include solid-state memory devices, magnetic tape drives and optical or magnetic disk drives and arrays. Memory devices can be further characterized, for example, by capacity, levels or types of redundancy provided (e.g., RAID-1 or RAID-5), bandwidth, cost, latency (e.g., read latency and/or write latency), and whether they are, for example, read and write capable, read-only capable, dynamic, static, volatile, or non-volatile.
Further, to make use of such devices, some infrastructure is generally required for the data storage system. For example, a data storage system may include data communication channels, such as communication buses, controllers (e.g., disk and bus controllers), power supplies and may be adapted to connect to host systems.
Additionally, various data elements, such as files or databases, may be placed in a storage system in a number of different ways. This task is difficult because the data elements will apply a load to the system. The placement will therefore impact the resulting performance of the storage system. Over-committing a particular component may be result in poor performance. Conversely, over-purchasing the resources results in a system that is not cost-effective. The administrator therefore wishes to find a solution which will not over-commit resources, but will also not waste resources. This task quickly becomes more complicated when one attempts to apply additional constraints. For example, certain types of the data may only be suitable for storage in certain types of the memory devices.
Because specialized skills are required to select appropriate storage devices for a specific data storage system, to configure the devices, to provide appropriate infrastructure, and to assign data elements to the devices, such specially-designed storage systems tend to be expensive. Further, due to lack of a systematic approach, the design process can be time consuming and may yield a poor result.
Accordingly, it would be desirable to provide a technique for the design of a data storage system that is more systematic, more likely to yield optimal results and that is less time-consuming than conventional design techniques.